package com.whut.service;

import com.whut.model.*;
import com.whut.v_model.NewProblemCollectDetail;
import com.whut.v_model.PCDandUSERNAME;
import com.whut.v_model.ProblemCollectDetail;
import com.whut.v_vo.*;

import java.lang.Object;

import java.io.UnsupportedEncodingException;
import java.util.List;

public interface CheckInfoService {
    public Object getCheckInfoByPage(String startTime,String endTime,int curPage,int pageSize,String checkState,String startTimeY,String endTimeY,int client,String projectName);

    public String test()throws UnsupportedEncodingException;

    public String generateCheckReport(int projectId,int checkId,int reportType) throws UnsupportedEncodingException, Exception;

    public String generateReportType3(int projectId,int checkId) throws UnsupportedEncodingException;

    public String generateReportType4(int projectId,int checkId) throws UnsupportedEncodingException;

    public List<Object> getChooseInfo(int checkId);

    public List<Object> getNewChooseInfo(int checkId);


    public List<? extends Object> getFourthInfo(int checkId,int fourthId);

    public Object getContractInfoByPage(int curpage,int pagesize);

    public String addContractInfo(Contractinfo contractinfo);

    public String deleteContractInfo(int contractId);

    public String addPointLimitInfo(Pointlimit pointlimit);

    public String editPointLimitInfo(Pointlimit pointlimit);

    public String deletePointLimitInfo(Integer mkey);

    public String deleteCheckInfo(int checkId);

    public String saveCheckResultEdit(int mkey,int fifthId,int sixthId,String riskPoint,String suggestion,String picName);
    public String saveBack(int checkId);
    public String uploadReport(int checkId,String docxName);
    public String getDownLoadUrlByCheckId(int checkId);
    public String deleteProblemCollect(int mkey);
    public Object getUncheckInfo(int fourthId,int checkId);

    /*wyh*/
    /*vague search*/
    public Object searchContractInfoByPage(int curPage, int pageSize, String inputSearch);
    public Object getLimitPoint(int curPage,int pageSize);

    public Object getTest(Integer equipId);

    List<Object> getClientByType(String clientType);

    /**
     * @author： wenyihan
     * @description： 查询检查下对应的所有已被组长审核的问题
     * @date： 17:51 2020/9/10
     * @param： [checkId]
     * @return： java.util.List<java.lang.Object>
    */
    List<Object> findAllInfo(Integer checkId);

    /**
     * @author： wenyihan
     * @description： 将cct表中对应数据得isExamine字段设置为Y，Y为已审核， null为未审核
     * @date： 18:06 2020/9/11
     * @param： [checkId]
     * @return： java.lang.Object
    */
    Object examineProblem(Integer checkId);

    /**
     * @author： wenyihan
     * @description： 判断改问题是否经过最终审核
     * @date： 20:03 2020/9/11
     * @param： [checkId]
     * @return： java.lang.Object
     */
    Object qualifyExamine(Integer checkId);


    //返回examineInfo中第二级collapse中显示的第四级名称
    List<Node4PName1VO> Getnode4nameBycheckId(Integer checkId);


    //返回examineInfo中table的信息，包括PCD表和检查人（userName）
    List<PCDandUSERNAME> findPCDInfo(Integer checkId, Integer fourthId);

    List<Summary> getSummary(Integer checkId, Integer fourthId);

    List<Prefixsystem> findSixthName(Integer fourthId);

    /**
     * @author： wenyihan
     * @description：通过第六级id获取所有对应的问题描述
     * @date： 16:23 2020/10/28
     * @param： [sixthId]
     * @return： java.util.List<com.whut.model.Problemdescription>
    */
    List<Newproblemdescription> findProblemDesBySixthId(Integer sixthId);

    /**
     * @author： wenyihan
     * @description：根据最后一级id获取问题描述对应的问题数量（性质）
     * @date： 11:03 2020/11/1
     * @param： [lastId]
     * @return： java.util.Map<java.lang.Integer,java.lang.String>
    */
    List<ProblemNumVO> findProblemNumByLastId(Integer lastId);

    /**
     * @author： wenyihan
     * @description：审核界面点击修改按钮后，problemCollect表中对应字段修改
     * @date： 10:37 2020/10/30
     * @param： [mkey, fifthId, sixthId, remark, suggestion, picName, checkPart, lastId]
     * @return： boolean
    */
    boolean problemCollectUpdate(Integer mkey, Integer fifthId, Integer sixthId, String remark, String suggestion, String problemQua, String picName, String checkPart, Integer lastId);

    /**
     * @author： wenyihan
     * @description：审核界面点击修改按钮后，newProblemDespriction表中对应字段修改
     * @date： 11:38 2020/10/30
     * @param： [number, riskNumber]
     * @return： boolean
     */
    boolean newProblemDesUpdate(Integer number, String riskNumber);

    /**
     * @author： wenyihan
     * @description：/审核界面点击修改按钮后，对corrspondScale字段修改，涉及pc，npd以及rsc表
     * @date： 11:45 2020/10/30
     * @param： [mkey, lastId]
     * @return： boolean
     */
    boolean corrspondScaleUpdate(Integer mkey, Integer lastId, String correspondScale);

    /**
     * @author： wenyihan
     * @description：编辑后对更新数据查询
     * @date： 11:14 2020/11/10
     * @param： [checkId, fourthId]
     * @return： java.util.List<com.whut.v_model.PCDandUSERNAME>
     */
    List<PCDandUSERNAME> findPCDInfoAfterUpdate(Integer checkId, Integer fourthId);

    String saveEditInfo(int mkey, String riskPoint, String suggestion, String picName);

    Boolean judgeNewOrOldSystem(int checkId);

    List<oldSysPreListVO> getpNameByUpperId(int preNum);

    List<oldSysLastListVO> getLastListByUpperId(int preNum);

    Boolean oldSysUpdate(Integer mKey, Integer fifthId, Integer sixthId, Integer lastId, String problemQua, String suggestion, String pic, String riskPoint);

    String calculateRiskPoint(Integer lastId, String problemQua);

    String editSummary(Integer mKey, String summary);

    String insertSummary(Integer checkId, Integer fourthId, String summary, Integer firstId);

    List<oldSysExamInfoVO> getOldSysFourthInfo(Integer checkId, Integer fourthId);

    /**
     * @author： wenyihan
     * @description：新类型的隐患报告
     * @date： 17:08 2021/1/4
     * @param： [projectId, checkId]
     * @return： java.lang.String
    */
    String newHiddenCheckReport(int projectId, int checkId) throws UnsupportedEncodingException;

    boolean getIsNew(int checkId);
}

